package cn.coder.toolkit;

import java.util.Arrays;

public final class StringKit {

	/**
	 * 首字母小写
	 */
	public static String lowerCaseFirst(String string) {
		char[] chars = string.toCharArray();
		chars[0] += 32;
		return String.valueOf(chars);
	}

	/**
	 * 首字母大写
	 */
	public static String upperCaseFirst(String string) {
		char[] chars = string.toCharArray();
		chars[0] -= 32;
		return String.valueOf(chars);
	}

	/**
	 * 截取左边
	 */
	public static String left(String string, int length) {
		return string.length() < length ? string : string.substring(0, length);
	}

	/**
	 * 截取右边
	 */
	public static String right(String string, int length) {
		return string.length() < length ? string : string.substring(string.length() - length);
	}

	/**
	 * 全相同：string 与数组中所有元素都相同
	 */
	public static boolean equalsAll(String string, String... array) {
		return Arrays.stream(array).allMatch(s -> s.equals(string));
	}

	/**
	 * string 在 array 中
	 */
	public static boolean in(String string, String... array) {
		return Arrays.asList(array).contains(string);
	}

	/**
	 * string 不在 array 中
	 */
	public static boolean notIn(String string, String... array) {
		return !in(string, array);
	}

	/**
	 * string 中包含 array 中的任意一个子串
	 */
	public static boolean containsAny(String string, String... array) {
		return Arrays.stream(array).anyMatch(string::contains);
	}

	/**
	 * string 中包含 array 中的所有子串
	 */
	public static boolean containsAll(String string, String... array) {
		return Arrays.stream(array).allMatch(string::contains);
	}

}
